package com.rickpan.repository;

import com.rickpan.entity.DeveloperConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 开发者配置Repository
 * 
 * @author 开发团队协调员
 * @since 2025-07-17
 */
@Repository
public interface DeveloperConfigRepository extends JpaRepository<DeveloperConfig, Long> {

    /**
     * 根据配置键查找配置
     * 
     * @param configKey 配置键
     * @return 配置信息
     */
    Optional<DeveloperConfig> findByConfigKey(String configKey);

    /**
     * 查找所有开发者相关配置
     * 
     * @return 配置列表
     */
    @Query("SELECT dc FROM DeveloperConfig dc WHERE dc.configKey LIKE 'developer.%' ORDER BY dc.configKey")
    List<DeveloperConfig> findAllDeveloperConfigs();

    /**
     * 根据配置键前缀查找配置
     * 
     * @param keyPrefix 配置键前缀
     * @return 配置列表
     */
    @Query("SELECT dc FROM DeveloperConfig dc WHERE dc.configKey LIKE :keyPrefix ORDER BY dc.configKey")
    List<DeveloperConfig> findByConfigKeyStartingWith(@Param("keyPrefix") String keyPrefix);

    /**
     * 检查配置键是否存在
     * 
     * @param configKey 配置键
     * @return 是否存在
     */
    boolean existsByConfigKey(String configKey);
}
